package com.hbzhit.modules.act.handle;

import org.activiti.engine.task.Comment;

import java.util.Map;

/**
 * 任务接口
 *
 * @author DING
 * @date 2019年7月23日
 */
public interface WorkFlowTask {

    /**
     * 设置变量
     *
     * @param taskId       任务id
     * @param variableName 变量名
     * @param value        变量值
     */
    public void setVariableLocal(String taskId, String variableName, Object value);

    /**
     * 设置审批任务的执行人
     *
     * @param taskId 任务id
     * @param userId 用户id
     */
    public void claim(String taskId, String userId);

    /**
     * 取消审批任务的执行人
     *
     * @param taskId 任务id
     */
    public void unclaim(String taskId);

    /**
     * 完成审批任务
     *
     * @param taskId 任务id
     */
    public void complete(String taskId);

    /**
     * 完成审批任务
     *
     * @param taskId    任务id
     * @param variables 流程变量
     */
    public void complete(String taskId, Map<String, Object> variables);

    /**
     * 设置任务的执行用户
     *
     * @param taskId 任务id
     * @param userId 用户id
     */
    public void setAssignee(String taskId, String userId);

    /**
     * 添加任务候选人
     *
     * @param taskId 任务id
     * @param userId 用户id
     */
    public void addCandidateUser(String taskId, String userId);

    /**
     * 添加备注
     *
     * @param taskId            任务id
     * @param processInstanceId 流程实例id
     * @param message           备注信息
     * @return 备注对象
     */
    public Comment addComment(String taskId, String processInstanceId, String message);

    /**
     * 添加备注
     *
     * @param taskId            任务id
     * @param processInstanceId 流程实例id
     * @param type              类型
     * @param message           备注信息
     * @return 备注对象
     */
    public Comment addComment(String taskId, String processInstanceId, String type, String message);

}

